package com.knight.activemq.subscribers;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 * Created by YQ on 2017/6/15.
 */
public class Subscriber {
    public static void main(String[] args) throws Exception{
        // 第一步：建立ConnectionFactory工厂对象
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER,
                ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://0.0.0.0:61616");
        // 第二步：通过ConnectionFactory创建一个Connection连接,启动connection
        Connection connection = connectionFactory.createConnection();
        connection.start();
        // 第三步，通过connection创建session，用于接收消息;并设置是否，签收模式
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);

        // 第四步：通过session创建Destination对象，该对象指的是一个客户端用来指定生产消费目标和消费消息来源的对象，
        // 在PTP模式中，Destination被称为queue，在发布订阅模式中被称为topic;并制定destination的名称
        //Destination destination = session.createQueue("hellloQueue");
        Destination helloTopic = session.createTopic("helloTopic");

        // 第五步：通过connection创建consumer
        MessageConsumer consumer = session.createConsumer(helloTopic);
        while(Boolean.TRUE){
            TextMessage message = (TextMessage)consumer.receive();
            if(message==null) break;
            System.out.println("收到的内如："+message.getText());
        }
        if(connection!=null){
            connection.close();
        }
    }
}
